home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / programer2 / euclidlib / c / euclid < prev    next >
Text File  |  1992-04-18  |  5KB  |  140 lines

  1. /**** euclid.c ****/
  2. /* By Paul Field
  3.  * See !ReadMe file for distribution/modification restrictions
  4.  */
  5.  
  6. #include "euclid.h"
  7. #include "euclidswis.h"
  8. #include "os.h"
  9.  
  10. #pragma no_check_stack
  11.  
  12. void euclid_getcolour(unsigned int c, unsigned int *m,
  13.                       unsigned int *r, unsigned int *g, unsigned int *b)
  14.  { *m = c>>24;
  15.    *r = c & 0xff;
  16.    *g = (c>>8) & 0xff;
  17.    *b = (c>>16) & 0xff;
  18.  }
  19.  
  20. void euclid_setname(char *name, const char *cstring)
  21.  { while(*cstring)
  22.     { *name++ = *cstring++;
  23.     }
  24.    *name = '\r';
  25.  }
  26.  
  27. void euclid_getname(char *cstring, const char *name)
  28.  { while(*name != '\r')
  29.     { *cstring++ = *name++;
  30.     }
  31.    *cstring = NULL;
  32.  }
  33.  
  34. /**** Main interface functions for euclid module ****/
  35.  
  36. os_error *euclid_initialise(euclid_initflags flags, euclid_header *structure,
  37.                             size_t size, int *version)
  38.  { return(os_swi3r(os_X|Euclid_Initialise, flags, (int)structure, size,
  39.                                            NULL, NULL, version));
  40.  }
  41.  
  42.  
  43. os_error *euclid_draw(euclid_drawstyle style, euclid_header *structure,
  44.                       int xoffset, int yoffset, const char *camera, void *vduvars,
  45.                       BOOL *timedout, euclid_drawinfo **infoblock)
  46.  { return(os_swi6r(os_X|Euclid_Draw, style, (int)structure, xoffset, yoffset,
  47.                                     (int)camera, (int)vduvars,
  48.                                     timedout, NULL, (int *)infoblock, NULL, NULL, NULL));
  49.  }
  50.  
  51.  
  52. os_error *euclid_load(BOOL postprocess, euclid_header *structure, const char *filename)
  53.  { return(os_swi3(os_X|Euclid_Load, postprocess, (int)structure, (int)filename));
  54.  }
  55.  
  56.  
  57. os_error *euclid_save(euclid_header *structure, const char *filename)
  58.  { return(os_swi3(os_X|Euclid_Save, NULL, (int)structure, (int)filename));
  59.  }
  60.  
  61.  
  62. os_error *euclid_append(BOOL postprocess, euclid_header *structure,const char *filename)
  63.  { return(os_swi3(os_X|Euclid_Append, postprocess, (int)structure, (int)filename));
  64.  }
  65.  
  66. os_error *euclid_find(euclid_header *structure, const char *name,
  67.                       char **leaf, euclid_transformation **transformation,
  68.                       euclid_matrixtransformation **matrix,
  69.                       euclid_matrixtransformation **inverse,
  70.                       void **entry,
  71.                       euclid_group **group)
  72.  { return(os_swi6r(os_X|Euclid_Find, NULL, (int)structure, (int)name, NULL, NULL, NULL,
  73.                                     (int *)leaf, (int *)transformation, (int *)matrix,
  74.                                     (int *)inverse, (int *) entry, (int *)group));
  75.  }
  76.  
  77. os_error *euclid_create(unsigned int children, euclid_header *structure, euclid_id id,
  78.                         void *newobject)
  79.  { return(os_swi3r(os_X|Euclid_Create, children, (int)structure, id,
  80.                                        (int *)newobject, NULL, NULL));
  81.  }
  82.  
  83. os_error *euclid_destroy(euclid_header *structure, void *object)
  84.  { return(os_swi3(os_X|Euclid_Destroy, NULL, (int)structure, (int)object));
  85.  }
  86.  
  87. os_error *euclid_insert(unsigned int entry, euclid_header *structure, void *object,
  88.                         void *newentry)
  89.  { return(os_swi3r(os_X|Euclid_Insert, entry, (int)structure, (int)object,
  90.                                        (int *)newentry, NULL, NULL));
  91.  }
  92.  
  93. os_error *euclid_delete(unsigned int entry, euclid_header *structure, void *object)
  94.  { return(os_swi3(os_X|Euclid_Delete, entry, (int)structure, (int)object));
  95.  }
  96.  
  97.  
  98. os_error *euclid_getsystemmaterials(euclid_material **materials)
  99.  { return(os_swi1r(os_X|Euclid_MiscOp, 2, (int *)materials));
  100.  }
  101.  
  102. os_error *euclid_imagesmooth(int reserved)
  103.  { return(os_swi2(os_X|Euclid_MiscOp, 3, reserved));
  104.  }
  105.  
  106. os_error *euclid_blocksize(euclid_id id, unsigned *headersize, unsigned *variablesize)
  107.  { return(os_swi2r(os_X|Euclid_MiscOp, 4, id, (int *)headersize, (int *)variablesize));
  108.  }
  109.  
  110. os_error *euclid_ditherpattern(unsigned colour, unsigned *bytes)
  111.  { return(os_swi2r(os_X|Euclid_MiscOp, 5, colour, (int *)bytes, NULL));
  112.  }
  113.  
  114. os_error *euclid_invalidatepalettecache(void)
  115.  { return(os_swi1(os_X|Euclid_MiscOp, 6));
  116.  }
  117.  
  118. os_error *euclid_setdrawparams(char depth, char simplicity, char maxrecursion,
  119.                                euclid_drawflags flags, fix14 cutoff)
  120.  { return(os_swi3(os_X|Euclid_MiscOp, 7,
  121.                   ((char)flags<<24)|(maxrecursion<<16)|(simplicity<<8)|depth, cutoff));
  122.  }
  123.  
  124.  
  125.  
  126.  
  127. os_error *euclid_closedown(void)
  128.  { return(os_swi0(os_X|Euclid_CloseDown));
  129.  }
  130.  
  131. os_error *euclid_compress(euclid_compression type, void **data, void **screenbase)
  132.  { return(os_swi3r(os_X|Euclid_Compress, type, (int)*data, (int)*screenbase,
  133.                                          NULL, (int *)data, (int *)screenbase));
  134.  }
  135.  
  136. os_error *euclid_expand(euclid_compression type, void **data, void **screenbase)
  137.  { return(os_swi3r(os_X|Euclid_Expand, type, (int)*data, (int)*screenbase,
  138.                                        NULL, (int *)data, (int *)screenbase));
  139.  }
  140.